#include int Power = 11; int PIN = 12; #define NUMPIXELS 1 #define BUTTON D1 #define LED_RED D0 #define LED_YELLOW D6 #define LED_GREEN D7 Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); void setup() { pixels.begin(); pinMode(Power, OUTPUT); pinMode(BUTTON, INPUT_PULLUP); pinMode(LED_RED, OUTPUT); pinMode(LED_YELLOW, OUTPUT); pinMode(LED_GREEN, OUTPUT); digitalWrite(Power, HIGH); } void loop() { // Lee el botón para detectar si se ha presionado if (digitalRead(BUTTON) == LOW) { // Se presionó el botón, cambia el color del efecto de fuego changeFireColor(); // Espera hasta que se libere el botón para evitar múltiples acciones al mantenerlo presionado while (digitalRead(BUTTON) == LOW) { delay(10); } } // Simula un efecto de "fuego" en el NeoPixel fireEffect(); // Simula chispas en los LEDs simulateSparks(); } void changeFireColor() { // Cambia el color del efecto de fuego a un valor aleatorio int red = random(150, 255); int green = random(50, 150); int blue = 0; pixels.setPixelColor(0, pixels.Color(red, green, blue)); pixels.show(); } void fireEffect() { // Simula un efecto de "fuego" en el NeoPixel int flicker = random(0, 30); pixels.setBrightness(255 - flicker); pixels.show(); delay(random(20, 50)); } void simulateSparks() { // Simula chispas en los LEDs digitalWrite(LED_RED, HIGH); delay(random(10, 50)); digitalWrite(LED_RED, LOW); digitalWrite(LED_YELLOW, HIGH); delay(random(10, 50)); digitalWrite(LED_YELLOW, LOW); digitalWrite(LED_GREEN, HIGH); delay(random(10, 50)); digitalWrite(LED_GREEN, LOW); }